// ==UserScript==
// @name         禁止谷歌翻译页面上的代码
// @namespace    https://gitee.com/lowbibibi/TMK/raw/master/not-translate-code.js
// @version      1.0.1
// @description  禁止谷歌翻译页面上的代码
// @require      http://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
// @author       辣条要甜点
// @include      *
// @match        *
// @grant GM_addStyle
// ==/UserScript==
/*jshint esversion: 6 */
(function() {
    'use strict';
    var Url = document.URL;
    var operate = [
        {
            rule : /https:\/\/medium.com\/*/g,
            action : function(){
                $('.Box-body').map(function(){
                    $(this).html('<code style="white-space: normal;">'+$(this).html()+'</code>');
                });
            }
        },
        {
            rule : /https:\/\/api.flutter.dev\/*/g,
            action : function(){
                GM_addStyle('body{font-family: arial!important;} .trans-code{display: inline;/*font-size: 15px;*/font-weight: 500; font-family: Roboto, sans-serif;} li.inherited a {font-weight: 500!important;} .sidebar h5, .sidebar ol li {border-bottom: 1px #eaeaea solid;}');
                var noTrans = function(html){
                    return '<code class="trans-code">'+html+'</code>';
                }
                $('header').find('li').map(function(){
                    var a = $(this).find('a');
                    if(a.length > 0){
                        if(a.html() == 'Flutter'){
                            a.html(noTrans('Flutter'));
                            return;
                        }
                        a.html(noTrans(a.html())+'('+toSpace(a.html())+')');
                        return;
                    }
                    $(this).html(noTrans($(this).html())+'('+toSpace($(this).html())+')');
                });
                var transList = function(){
                    var a = $(this).find('a');
                    if(a.length > 0){
                        a.html(noTrans(a.html())+'<br/>('+toSpace(a.html())+')');
                        return;
                    }
                    $(this).html(noTrans($(this).html())+'<br/>('+toSpace($(this).html())+')');
                }
                var markA = function(){
                    $(this).attr('is_trans', 1);
                }
                $('#dartdoc-sidebar-left').css('flex', '0 1 260px').find('li').map(transList);
                $('#dartdoc-sidebar-right').css('flex', '0 1 14em').find('li').map(transList);
                var content = $('#dartdoc-main-content');
                content.find(':header').map(function(){
                    if($(this).html() == 'Operators'){
                        $(this).html(noTrans('重载操作符('+$(this).html()+')'));
                        return;
                    }
                    $(this).html(toSpace($(this).html())+noTrans('('+$(this).html()+')'));
                });
                content.find('.callable').map(function(){
                    $(this).html(noTrans($(this).html()));
                })
                content.find('.callable').find('a').map(markA);
                content.find('.property').map(function(){
                    $(this).html(noTrans($(this).html()));
                })
                content.find('.property').find('a').map(markA);
                content.find('.features').map(function(){
                    $(this).html(noTrans($(this).html()));
                })
                content.find('.features').find('a').map(markA);
                var horizontal = content.find('.dl-horizontal');
                horizontal.find('dt').map(function(){
                    if($(this).text() == 'Inheritance'){
                        $(this).html(noTrans('继承'));
                    }
                });
                horizontal.find('ul').map(function(){
                    $(this).html(noTrans($(this).html()));
                })
                horizontal.find('ul').find('a').map(markA);
                content.find('a').map(function(){
                    if($(this).attr('is_trans') != 1){
                        $(this).html(noTrans($(this).html()));
                    }
                });
                content.find('button').map(function(){
                    $(this).html(noTrans($(this).html()));
                });
            },
        },
        {
            rule : /https:\/\/flame-engine.org\/docs*/g,
            action : function(){
                var a = [];
                var isTrans = false;
                $('main').find('.DocSidebar__DocSidebarContainer-q7gj5k-1').find('a').map(function(){
                    a.push({hand:$(this), text:$(this).html()});
                    var self = $(this);
                    $(this).click(function(){
                        location.href = self.attr('href');
                    });
                });
                setInterval(() => {
                    if($('html').hasClass('translated-ltr')){
                        if(!isTrans){
                            isTrans = true;
                            a.map(function(item){
                                item.hand.html('<code>'+item.text+'</code></br>'+item.text);
                            });
                        }
                        return;
                    }
                    isTrans = false;
                    a.map(function(item){
                        item.hand.html(item.text);
                    });
                }, 500);
            }
        },
    ];
    operate.forEach(function(item){
        if(Url.match(item.rule)){
            item.action();
        }
    });

    function toSpace(text) {
        return text.replace(/([A-Z])/g," $1").toLowerCase().replace(/_+/g, ' ').replace(/\s+/g, ' ');
    }
})()